문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 Microsoft .NET (문단 편집) == .NET Native == .NET 코드를 네이티브 코드(Native code)로 컴파일하는 기능. CIL 문단에서 말한듯이 .NET는 컴파일하면 Java의 [[JVM]]와 마찬가지로 네이티브가 아닌 중간 언어인 CIL(Common Intermediate Language)로 컴파일한다. 이렇게 만들어진 프로그램은 .NET 런타임이 CIL를 해석하여 타켓 OS와 CPU의 기계어 코드로 번역하여 수행한다 .NET 런타임만 설치되어 있다면 어떠한 OS나 CPU에서도 .NET 프로그램이 그대로 동작한다는 장점[* CPU 아키텍처마다 기계어가 다르기 때운에 C/C++ 프로그램은 한 OS만 타켓으로 잡더라도 여러 아키텍처용으로 각각 컴파일해줘야 한다. 현재 많이 쓰이고 있는 아키텍처인 x86-64, ARM64용으로 제작한다. 과거에는 x86-64용으로만 제작했으나 [[Windows on ARM]]와 이를 탑재한 기기들이 출시되면서 ARM64용도 제작하는 경우가 늘고 있다. 물론 x86-64 에뮬레이터가 있기에 아예 x86-64 프로그램을 사용할 수 없다는 것은 아니다.]이 있으나 바로 코드를 실행하지 않고 런타임을 거쳐서 실행되기에 실행 속도는 C/C++로 개발한 프로그램보다 느리다. 요즘은 [[JIT]]와 하드웨어 성능 향상으로 실행 속도가 특수한 상황이 아니면 별 문제가 없지만 C/C++ 프로그램보다 메모리를 많이 자치한다. [[https://learn.microsoft.com/en-us/dotnet/framework/tools/ngen-exe-native-image-generator?WT.mc_id=DT-MVP-4038148|Ngen (Native Image Generator)]]를 사용하여 미리 네이티브 이미지를 생성할 수 있다. 네이티브 이미지를 만들어 놓으면 .NET 런타임은 해석하여 네이티브 코드를 생성하는 대신 이를 불러들여서 실행하도록 한다. 그러다보니 .NET가 업데이트되면 Ngen.exe를 사용하여 주요 라이브러리들의 네이티브 이미지를 미리 만들어 놓는다. 다만 .NET 런타임이 바로 실행할 수 있도록 네이티브 이미지를 만들지 사용하기 위해서는 결국 원래의 .NET 이미지도 있어야 한다. 그래서 나온게 .NET 7부터 도입되는 것이 바로 .NET Native AOT이다. 닷넷 코드를 CIL가 아닌 네이티브 코드로 직접 컴파일한다. 이로써 C/C++ 프로그램과 동등한 실행 속도와 메모리 최적화를 보장하지만 타켓 OS와 CPU에서만 실행할 수 있다. 따라서 여러 플랫폼을 지원하겠다면 각 플랫폼용으로 컴파일해줘야 한다. 또한 당연하지만 리플렉션(Reflection)은 AOT에서 지원되지 않는다. .NET 7 이전에도 .NET Native가 존재하였으나 [[Universal Windows Platform]] 프로젝트 전용이라 일반적인 .NET 프로젝트에는 사용할 수 없었다. .NET AOT에서 지원하는 아키텍처가 제한되어 있다. .NET 7의 AOT는 윈도우 및 리눅스용 x64, ARM64 프로젝트만 지원한다. .NET 8부터는 안드로이드, macOS, iOS, iOSSimulator, tvOS(ARM64만 지원), tvOSSimulator, MacCatalyst용 x64, ARM64 프로젝트도 지원한다. .NET AOT에서 발생하는 여러 제한 사항 때문에 아직은 Windows Forms와 WPF(Windows Presentation Foundation)를 지원하지 않는다. 즉 GUI 프로젝트는 지원하지 않는다. 이 경우 [[Windows API]]로 직접 구현하는 방법으로 사용해야 한다. Windows Forms의 경우 [[https://github.com/kant2002/WinFormsComInterop|WinFormsComInterop]] 라이브러리로 GUI를 사용할 수 있다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기